package cn.edu.ncu.housinghub.dto.request.user;

import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

/**
 * 注册请求
 */
@Data
public class RegisterRequest {

    @NotBlank(message = "用户名不能为空")
    private String username; // 用户名

    @Email(message = "邮箱格式不正确")
    @NotBlank(message = "邮箱不能为空")
    // 校验qq邮箱的格式
    @Pattern(regexp = "^[a-zA-Z0-9_-]+@qq.com$", message = "邮箱格式错误")
    private String email; // QQ邮箱

    @NotBlank(message = "密码不能为空")
    //  校验确认密码与密码是否一致
    @Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]).{8,}$",
            message = "密码必须包含字母、数字和特殊字符，且长度至少为8位，不能包含空格")
    private String password; // 密码

    @NotBlank(message = "确认密码不能为空")
    private String confirmPassword; // 确认密码

    @NotBlank(message = "验证码不能为空")
    private String verificationCode; // 验证码

    // 校验密码和确认密码是否一致
    @AssertTrue(message = "密码和确认密码不一致")
    public boolean isPasswordMatch() {
        return password != null && password.equals(confirmPassword);
    }
}
